import Vue from 'vue'
import Router from 'vue-router'
import Layout from "@/components/Layout";
import UsersRouter from "@/components/users/router";
import MonitorRouter from "@/components/monitor/router";
import DocumentsRouter from "@/components/documents/router";

Vue.use(Router)

let router = new Router({
  mode: "history",
  routes: [
    {
      path: "/login",
      name: "登录",
      // 异步加载组件，可以按需下载js文件
      component: resolver => require(["@/components/Login.vue"], resolver)
    },
    {
      path: '/',
      component: Layout,
      children: [
        {
          path: "",
          name: "后台首页",
          component: (resolve) => require(["@/components/Index"], resolve)
        },
        UsersRouter,
        MonitorRouter,
        // 如果import进来的对象，本身就是一个数组，那么在使用的时候变量名之前加上3个点。
        // 这三个点，表示把数组展开放入当前数组中。
        ...DocumentsRouter
      ]
    }
  ]
});

import Axios from "axios";
// 服务端返回的CORS相关的响应头，需要浏览器保存Cookie
// 对应后端的 configuration.setAllowCredentials(true);
Axios.defaults.withCredentials = true;

// 如果是AJAX请求，则需要使用AXIOS的拦截器来处理请求的拦截
Axios.interceptors.request.use(config => {
  // 请求发生之前
  return config;
}, error => {
  // 发送请求出现错误
  console.error(error);
  return Promise.reject(error);
});

import HeyUI from "heyui";

Axios.interceptors.response.use(response => {
  // 响应没有出现错误，200等
  // console.log("请求完成，状态码: " + response.status);
  return response;
}, error => {
  if (error.response.status === 403) {
    // 跳转到登录页面的时候，需要把授权地址作为参数传递给登录页面
    router.push({ name: "登录", params: { redirectUrl: error.request.responseURL } });
  } else {
    // 响应出现问题，403、404、500
    console.error(error);
    HeyUI.$Message({ type: "error", text: "网络出现故障，稍后再尝试" });
  }
  return Promise.reject(error);
});
export default router;
